<?php

// 导入 SMS 的 client
use TencentCloud\Sms\V20190711\SmsClient;
// 导入要请求接口对应的 Request 类
use TencentCloud\Sms\V20190711\Models\SendSmsRequest;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;
// 导入可选配置类
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use think\facade\Config;


function tencentSms($phone,$code){
    try {
        $cred = new Credential(sysconf('sms_secretId'),sysconf('sms_secretKey'));
        //$cred = new Credential(getenv("TENCENTCLOUD_SECRET_ID"), getenv("TENCENTCLOUD_SECRET_KEY"));

        // 实例化一个 http 选项，可选，无特殊需求时可以跳过
        $httpProfile = new HttpProfile();
        $httpProfile->setReqMethod("GET");  // POST 请求（默认为 POST 请求）
        $httpProfile->setReqTimeout(30);    // 请求超时时间，单位为秒（默认60秒）
        $httpProfile->setEndpoint("sms.tencentcloudapi.com");  // 指定接入地域域名（默认就近接入）

        // 实例化一个 client 选项，可选，无特殊需求时可以跳过
        $clientProfile = new ClientProfile();
        $clientProfile->setSignMethod("TC3-HMAC-SHA256");  // 指定签名算法（默认为 HmacSHA256）
        $clientProfile->setHttpProfile($httpProfile);

        // 实例化 SMS 的 client 对象，clientProfile 是可选的
        $client = new SmsClient($cred, "ap-shanghai", $clientProfile);

        // 实例化一个 sms 发送短信请求对象，每个接口都会对应一个 request 对象。
        $req = new SendSmsRequest();

        /* 填充请求参数，这里 request 对象的成员变量即对应接口的入参
         * 您可以通过官网接口文档或跳转到 request 对象的定义处查看请求参数的定义
         * 基本类型的设置:
           * 帮助链接：
           * 短信控制台：https://console.cloud.tencent.com/smsv2
           * sms helper：https://cloud.tencent.com/document/product/382/3773 */

        /* 短信应用 ID: 在 [短信控制台] 添加应用后生成的实际 SDKAppID，例如1400006666 */
        $req->SmsSdkAppid = "1400453851";
        /* 短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名，可登录 [短信控制台] 查看签名信息 */
        $req->Sign = "拾忆仓";
        /* 短信码号扩展号: 默认未开通，如需开通请联系 [sms helper] */
        $req->ExtendCode = "0";
        /* 下发手机号码，采用 e.164 标准，+[国家或地区码][手机号]
           * 例如+8613711112222， 其中前面有一个+号 ，86为国家码，13711112222为手机号，最多不要超过200个手机号*/
        $req->PhoneNumberSet = array("+86". $phone);
        /* 国际/港澳台短信 senderid: 国内短信填空，默认未开通，如需开通请联系 [sms helper] */
        $req->SenderId = "";
        /* 用户的 session 内容: 可以携带用户侧 ID 等上下文信息，server 会原样返回 */
        $req->SessionContext = rand(1000,9999);
        /* 模板 ID: 必须填写已审核通过的模板 ID。可登录 [短信控制台] 查看模板 ID */
        $req->TemplateID = "785190";
        /* 模板参数: 若无模板参数，则设置为空*/
        $req->TemplateParamSet = array($code);


        // 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
        $resp = $client->SendSms($req);

        $result = json_decode($resp->toJsonString());
        $code = $result->{'SendStatusSet'}[0]->{'Code'};
        if ($code  == 'Ok'){
            return 1;
        }else{
            return 0;
        }
/*
        // 输出 JSON 格式的字符串回包
        print_r($resp->toJsonString());

        // 可以取出单个值，您可以通过官网接口文档或跳转到 response 对象的定义处查看返回字段的定义
        dump($resp);die;
        print_r($resp->TotalCount);*/
    }
    catch(TencentCloudSDKException $e) {
        echo $e->getMessage();
    }
}


function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
}



function base64Upload($file){
    $image_info = getimagesize($file['tmp_name']);//$_FILES['file']['tmp_name']即文件路径
    $base64_image_content = "data:{$image_info['mime']};base64," . chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
//            echo $base64_image_content;die;
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
        $type = $result[2];
        $new_file = "./test.{$type}";
        if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
            echo '新文件保存成功：', $new_file;
        }
    }
}

function uploadImage($image){
    if ($image){
        $info = $image->move(ROOT_PATH . 'public' . DS . 'uploads');
        if($info){
            // 成功上传后 获取上传信息
            // 输出 jpg
            echo $info->getExtension();
            // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
            echo $info->getSaveName();
            // 输出 42a79759f284b767dfcb2a0197904287.jpg
            echo $info->getFilename();
        }else{
            // 上传失败获取错误信息
            echo $image->getError();
        }
    }
}


//对象转数组
function object_array($array) {
    if(is_object($array)) {
        $array = (array)$array;
    }
    if(is_array($array)) {
        foreach($array as $key=>$value) {
            $array[$key] = object_array($value);
        }
    }
    return $array;
}